package com.imaker.service;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.imaker.dao.BaseDao;
import com.imaker.domain.ModulesInfo;
import com.imaker.domain.Page;
import com.imaker.field.StaticField;

 /**
 * <p>程序名称：       ModulesService.java</p>
 * <p>程序说明：       模块Service</p>
 * <p>版权信息：       Copyright mayonghua</p>
 * <p>时间：          Oct 22, 2010 4:44:57 PM</p>	
 * 
 * @author：          mayonghua
 * @version：         Ver 0.1
 */
@Service
public class ModulesService implements IService {
	private BaseDao<ModulesInfo> baseDao = null;
	@Autowired
	public void setSessionFactory(SessionFactory sessionFactory) {
		baseDao = new BaseDao<ModulesInfo>(sessionFactory,ModulesInfo.class);
	}
	
	/**
	 * 查询模块列表
	 */
	public List<ModulesInfo> findAll(){
		
		List<ModulesInfo> list = null;
		try {
			list = baseDao.find("from ModulesInfo m order by m.sortIndex");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
	
	/**
	 * 添加模块
	 * @throws Exception 
	 */
	public String save(ModulesInfo modulesInfo){
		try {
			baseDao.save(modulesInfo);

		} catch (Exception e) {
			e.printStackTrace();
			return StaticField.error;
		}
		return StaticField.success;
	}
	
	/**
	 * 删除模块
	 */
	public String delete(List idList){
		try {
			baseDao.deleteByIdList(idList);
		} catch (Exception e) {
			e.printStackTrace();
			return StaticField.error;
		}
		return StaticField.success;
	}
	
	/**
	 * 更新模块
	 */
	public String update(ModulesInfo modulesInfo){
		try {
			baseDao.update(modulesInfo);
		} catch (Exception e) {
			e.printStackTrace();
			return StaticField.error;
		}
		return StaticField.success;
	}
	
	/**
	 * 根据ID查询模块信息
	 * @param modulesInfo
	 * @return
	 * @throws Exception
	 */
	public ModulesInfo findById(ModulesInfo modulesInfo) throws Exception{ 
		return baseDao.get(modulesInfo.getId());
	}
	
	/**
	 * 根据位置类型查询（左，中，右）
	 * @param type
	 * @return
	 * @throws Exception
	 */
	public List<ModulesInfo> findByType(String type) throws Exception{
		return baseDao.find(StaticField.ModulesByType, type);
	}
	
	/**
	 * 根据内容类型查询（新闻，产品）
	 */
	public List<ModulesInfo> findByContentType(String type) throws Exception {
		return baseDao.find(StaticField.ModulesByContentType, type);
	}
	
	/**
	 * 根据模块类型，分页查询模块信息
	 * @param page
	 * @param modulesTypeInfo
	 * @return
	 * @throws Exception
	 */
	public Page<ModulesInfo> listByPage(Page page) throws Exception {
		return baseDao.pagination(page,StaticField.ModulesByPageAll,"m.sortIndex");
	}
}
